package com.hsqn.entity;

import com.fasterxml.jackson.databind.JsonNode;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class WorkOrderLog {

    /**
     * 日志ID（主键，自增）
     * 对应表字段：id
     */
    private Long id;

    /**
     * 工单ID（关联 work_order 表的 id）
     * 对应表字段：order_id
     */
    private Long orderId;

    /**
     * 工单编号（关联 work_order 表的 order_no）
     * 对应表字段：order_no
     */
    private String orderNo;

    /**
     * 原状态（工单变更前的状态）
     * 对应表字段：from_status
     * 取值参考：0-待处理，1-处理中，2-已完成，3-已取消（与 work_order 表 order_status 一致）
     */
    private Integer fromStatus;  // 用 Integer 而非 int，适配字段默认 NULL 的情况

    /**
     * 新状态（工单变更后的状态）
     * 对应表字段：to_status
     * 取值参考：0-待处理，1-处理中，2-已完成，3-已取消（与 work_order 表 order_status 一致）
     */
    private Integer toStatus;

    /**
     * 操作类型（如：创建、分配、完成、取消等）
     * 对应表字段：operation_type
     */
    private String operationType;

    /**
     * 操作用户ID（执行该操作的用户ID，如管理员ID、服务人员ID）
     * 对应表字段：operation_user_id
     */
    private Long operationUserId;

    /**
     * 操作用户姓名（执行该操作的用户姓名，用于快速展示，非必须）
     * 对应表字段：operation_user_name
     */
    private String operationUserName;

    /**
     * 操作备注（记录操作的详细说明，如“分配给服务人员张三”）
     * 对应表字段：operation_remark
     */
    private String operationRemark;

    /**
     * 操作时间（默认当前时间，表中已设置 DEFAULT CURRENT_TIMESTAMP）
     * 对应表字段：operation_time
     * 使用 LocalDateTime 而非 Date，更符合 Java 8+ 时间API规范
     */
    private LocalDateTime operationTime;

    /**
     * 扩展信息（存储JSON格式数据，如分配人ID、执行人ID等动态信息）
     * 对应表字段：extend_info（表中字段类型为 json）
     * 使用 JsonNode 接收，可灵活解析JSON数据；若需固定结构，也可自定义实体类并搭配 JSON 解析注解
     */
    private JsonNode extendInfo;
}
